const path = require('path')
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
// const pkg = require("./package.json");
const isProd = process.env.VUE_APP_ENV === 'production'
// gizp
const CompressionPlugin = require('compression-webpack-plugin')
const { name } = require('./package')

module.exports = {
  // baseUrl: './',
  publicPath: isProd ? '/warning/' : './',
  assetsDir: 'static',
  productionSourceMap: false,
  lintOnSave: isProd,
  chainWebpack: chain => {
    chain.module
      .rule('svg')
      .exclude.add(path.resolve(__dirname, './src/icons'))

    chain.module
      .rule('svgIcon')
      .include.add(path.resolve(__dirname, './src/icons'))
      .end()
      .test(/\.(svg)(\?.*)?$/)
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
  },
  devServer: {
    headers: {
      'Access-Control-Allow-Origin': '*'
    },
    host: '0.0.0.0',
    port: 9094,
    proxy: {
      '/api': {
        target: process.env.VUE_APP_BASE_URL, // 代理地址事项子系统
        changeOrigin: true
      }
      // '/websocketType': {
      //   target: process.env.VUE_APP_WS_BASE_URL,
      //   changeOrigin: true
      // }
      // 以下启用
      // '/event':{
      //   target: process.env.VUE_APP_BASE_API, // 代理地址事项子系统
      //   changeOrigin: true
      // },
      // '/cfgApi':{
      //   target: process.env.VUE_APP_CONFIG_API, // 代理地址配置子系统
      //   changeOrigin: true,
      //   pathRewrite: {
      //     '^/cfgApi': '/'
      //   }
      // }
    }
  },
  configureWebpack: () => {
    // 生产环境开启gzip压缩
    let config = {
      output: {
        library: `${name}-[name]`,
        libraryTarget: 'umd', // 把微应用打包成 umd 库格式
        jsonpFunction: `webpackJsonp_${name}`
      }
      // externals: isProd ? {
      //   vue: 'Vue',
      //   'vue-router': 'VueRouter',
      //   vuex: 'Vuex',
      //   axios: 'axios'
      // } : {}
    }
    if (isProd) {
      config = Object.assign(config, {
        plugins: [
          new CompressionPlugin({
            test: /\.js$|\.html$|\.css$|\.jpg$|\.jpeg$|\.png/, // 需要压缩的文件类型
            threshold: 10240, // 归档需要进行压缩的文件大小最小值，我这个是10K以上的进行压缩
            deleteOriginalAssets: false // 是否删除原文件
          })
          // new BundleAnalyzerPlugin()
        ]
      })
    }
    return config
  },
  // configureWebpack: {
  //     externals: {
  //       AMap: "AMap" // 高德地图配置
  //     }
  // },
  css: {
    // 是否使用css分离插件 ExtractTextPlugin
    extract: !!isProd,
    // 开启 CSS source maps?
    sourceMap: false,
    // css预设器配置项
    loaderOptions: {
      scss: {
        additionalData: `
          $env: ${process.env.VUE_APP_ENV};
          @import "~@/styles/variables.scss";
          @import "~@cci/theme-ant-design/src/common/var.scss";
          @import "~@cci/cp-theme-default/src/common/var.scss";
        `
      }
    },
    // 启用 CSS modules for all css / pre-processor files.
    requireModuleExtension: true
  }
}
